<template>
	<view>
		<view v-if="inPorcessOrderId != null" class="order-process" @click="toOrder">您有进行中的订单,点击查看</view>
		
		<map id="map" :longitude="from.longitude" :latitude="from.latitude" :style="contentStyle" scale="15" :enable-traffic="false" :show-location="true" :enable-poi="true" class="map">
			<cover-image class="location" src="../../static/workbench/location.png" @tap="returnLocationHandle()"></cover-image>
		</map>
		<view class="panel">
			<view class="from" @tap="chooseLocationHandle('from')">
				<text>{{ from.address }}</text>
			</view>
			<view class="dashed-line"></view>
			<view class="to" @tap="chooseLocationHandle('to')">
				<text>{{ to.address }}</text>
			</view>
			<button class="btn" @tap="toCreateOrderHandle">查看路线</button>
		</view>
	</view>
</template>

<script>
	
import GtPush from '../../lib/gtpush-min.js'
	//地图点选插件
const chooseLocation = requirePlugin('chooseLocation');
let QQMapWX = require('../../lib/qqmap-wx-jssdk.min.js');
let qqmapsdk ;

export default {
	data() {
		return {
			//开始位置
			from: {
				address: '输入你的开始位置',
				longitude: 0,
				latitude: 0
			},
			//结束位置
			to: {
				address: '输入你的目的地', 
				longitude: 0,
				latitude: 0
			},
			
			//窗口样式
			contentStyle: '',
			windowHeight: 0,
			//地图对象
			map: null,
			//标记:开始位置点选或者结束位置点选
			chooseFromOrToflag: null,
			inPorcessOrderId:null,
			chooseType:"",
		};
	},
	methods: {
    //获取司机当前位置
    getLocation(){
      let _this=this
      uni.getLocation({
        type: 'gcj02',
        success: function (res) {
          _this.from.latitude=res.latitude
          _this.from.longitude=res.longitude
          _this.locationToCity(res.longitude,res.latitude)
        }
      })
    },
    //将坐标转换为地址
    locationToCity(longitude,latitude){
      let _this=this
      this.qqmapsdk.reverseGeocoder({
        location: {
          latitude: latitude,
          longitude: longitude
        },
        success: function(res) {//成功后的回调
          //console.log(res);
          _this.from.address = res.result.formatted_addresses.recommend
        },
        fail: function(error) {
          console.error(error);
        }
      })
    },
    //回到当前位置
    returnLocationHandle(){
      let _this=this
      let map = uni.createMapContext("map", this);
      _this.getLocation();
      map.moveToLocation({
        latitude:_this.from.latitude,
        longitude:_this.from.longitude
      })
    },
    //地图点选
    chooseLocationHandle(type){
      let _this=this
      _this.chooseType=type;
      const key = _this.Consts.QQMAP_KEY; //使用在腾讯位置服务申请的key
      const referer = 'location'; //调用插件的app的名称
      wx.navigateTo({
        url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer
      });
    },
    changeLocation(location){
      let _this=this
      if(!(location || _this.chooseType)){
        return;
      }else if(_this.chooseType=='to'){
        _this.to.address = location.name
        _this.to.longitude=location.longitude
        _this.to.latitude=location.latitude
      } else {
        _this.from.address = location.name
        _this.from.longitude=location.longitude
        _this.from.latitude=location.latitude
      }
    },

    //查看路线
    toCreateOrderHandle(){
      //将地址存到StorageSync，供create_order页面调用
      uni.setStorageSync('from',this.from)
      uni.setStorageSync('to',this.to)
      uni.navigateTo({
        url:"../create_order/create_order"
      })
    },
    //初始化窗口样式
    initStyle(){
      let _this = this;
      //处理窗口样式
      let windowHeight= uni.getSystemInfoSync().windowHeight;
      _this.windowHeight = windowHeight;
      _this.contentStyle = `height:${_this.windowHeight}px`;
    },
	},

	onShow: function() {
    let _this = this;
    _this.initStyle();
    const location = chooseLocation.getLocation();
    _this.changeLocation(location);
	},
	onHide: function() {
	},
	onLoad: function() {
		let _this = this;
    this.qqmapsdk = new QQMapWX({
      key: _this.Consts.QQMAP_KEY // 必填
    });
    _this.getLocation();
	},
	onUnload: function() {
		
	}
};
</script>

<style lang="less">
@import url('workbench.less');
</style>
